package com.tubeonfire.model;

import java.util.List;
import com.tubeonfire.entity.Tag;

import javax.jdo.PersistenceManager;
import javax.jdo.Query;

public class TagModel {

	PersistenceManager pm = PMF.get().getPersistenceManager();

	public boolean add(Tag tag) {
		try {
			pm.makePersistent(tag);

		} catch (Exception e) {
			System.out.println("Error when add tag object.");
			e.printStackTrace();
			return false;
		}
		return true;
	}

	public boolean addAll(List<Tag> listTag) {
		try {
			pm.makePersistentAll(listTag);
			System.out.println("Add all tube success.");
		} catch (Exception e) {
			System.out.println("Error when add many tag object.");
			e.printStackTrace();
			return false;
		}
		return true;
	}

	public boolean update(Tag tag) {
		pm.makePersistent(tag);
		return true;
	}

	@SuppressWarnings("unchecked")
	public Tag getByAlias(String alias) {
		Tag tag = null;
		Query query = pm.newQuery(Tag.class);
		query.setFilter("alias==tagAlias");
		query.declareParameters("java.lang.String tagAlias");
		query.setRange(0, 1);
		List<Tag> listResult = (List<Tag>) query.execute(alias);
		if (listResult.size() > 0) {
			tag = listResult.get(0);
		}
		return tag;
	}

	@SuppressWarnings("unchecked")
	public List<Tag> getRandom() {
		int min = 1;
		int max = 80;
		int randomMin = min + (int) (Math.random() * (max - min));
		int randomMax = randomMin + 10;
		if ((max - randomMin) < 10) {
			randomMax = randomMin;
			randomMin = randomMax - 10;
		}
		System.out.println("Min : " + randomMin);
		System.out.println("Max : " + randomMax);
		Query query = pm.newQuery(Tag.class);
		query.setRange(randomMin, randomMax);
		List<Tag> listResult = (List<Tag>) query.execute();
		if (listResult.size() > 0) {
			return listResult;
		} else {
			return null;
		}
	}

	public void closePM() {
		pm.close();		
	}

}
